Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 946eccd5c4a233d801f6b813057211aedadce5a2


Parents : 7b6c0c3
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-04-22T19:06:33-05:00

feat(electron): fix resource handling for platform-specific packaging

Changes

2 files changed, 19 insertions(+), 1 deletions(-)


Diff

diff --git a/electron/main.js b/electron/main.js
index 483ec6bd..b74ad2ed 100644
--- a/electron/main.js
+++ b/electron/main.js
@@ -618,6 +618,20 @@ app.whenReady().then(async () => {
const resourcesPath = process.resourcesPath || path.join(appPath, "..", "..");
var exe = null;
+ const platformFolder =
+ process.platform === "win32" || process.platform === "win"
+ ? "win32"
+ : process.platform === "darwin"
+ ? "darwin"
+ : "linux";
+ const archSegment = (() => {
+ if (process.arch === "arm64") return "arm64";
+ if (process.arch === "ia32") return "ia32";
+ if (process.arch === "arm") return "armv7l";
+ return "x64";
+ })();
+ const packagedExtraResourceDir = path.join(resourcesPath, `${platformFolder}-${archSegment}`, exeName);
+
// when packaged, extraResources are placed at resources/backend
// when packaged with extraFiles, they were at resources/app/electron/build/exe
// when packaged with asar, unpacked files are in app.asar.unpacked/ directory
@@ -625,6 +639,8 @@ app.whenReady().then(async () => {
const possiblePaths = [
// packaged app - extraResources location (resources/backend)
path.join(resourcesPath, "backend", exeName),
+ // @electron/packager extraResource: copies build/exe/<platform>-<arch> to resources/<platform>-<arch>/
+ packagedExtraResourceDir,
// electron-forge extraResource location (resources/exe)
path.join(resourcesPath, "exe", exeName),
// legacy packaged app - extraFiles location (resources/app/electron/build/exe)

diff --git a/forge.config.js b/forge.config.js
index 578dc152..d90ce93e 100644
--- a/forge.config.js
+++ b/forge.config.js
@@ -23,7 +23,9 @@ if (platform === "win32" || platform === "win") {
module.exports = {
packagerConfig: {
- asar: true,
+ asar: {
+ unpack: "electron/{loading.html,crash.html,preload.js}",
+ },
ignore: [
/^\/\.flatpak-builder(\/|$)/,
/^\/\.snapcraft(\/|$)/,


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────